<template>

    <el-dropdown class="type-size"
                 placement="bottom"
                 @command="handleCommandSkin"
                 trigger="hover">
        <el-button class="el-dropdown-link">换肤<i class="el-icon-caret-bottom el-icon--right"></i></el-button>

        <el-dropdown-menu slot="dropdown">
            <el-dropdown-item class="showweather-2"
                              v-for="(item, index) in Peeling"
                              :key="index"
                              :command="item.color">
                <!-- <div class="s-children-2">
                    <div class="addlist-2">
                        <div class="addicon">
                            <p>{{ item.name }}:</p>
                        </div>
                        <div class="addicon">
                            <el-image class="addicon-img"
                                      :src="item.icon"></el-image>
                        </div>
                    </div>
                </div> -->

                <div class="s-children-2">
                    <div class="addlist-2">
                        <el-radio v-model="radio1"
                                  :label="item.id"
                                  border>{{ item.name }}</el-radio>
                    </div>
                </div>

                <!-- <el-radio v-model="radio1"
                          label="2"
                          border>备选项2</el-radio> -->

            </el-dropdown-item>
        </el-dropdown-menu>
    </el-dropdown>

    <!-- <el-tooltip effect="dark"
                content="theme"
                placement="bottom">
        <el-color-picker v-model="theme"
                         class="theme-picker"
                         size="small"
                         popper-class="theme-picker-dropdown" />
    </el-tooltip> -->
</template>

<script>
const version = require('element-ui/package.json').version // element-ui version from node_modules
const ORIGINAL_THEME = '#409EFF' // default color

export default {
    data() {
        return {
            Peeling: [
                {
                    id: 1,
                    name: "默认",
                    color: "#F0FFFE",
                    icon: require("../../assets/images/defult.png"),
                },
                {
                    id: 2,
                    name: "淡蓝",
                    color: "#DAEBFF",
                    icon: require("../../assets/images/danlan.png"),
                },
                {
                    id: 3,
                    name: "灰蓝",
                    color: "#F5F5FD",
                    icon: require("../../assets/images/huilan.png")
                }
            ],
            chalk: '', // content of theme-chalk css
            theme: ORIGINAL_THEME,
            radio1: 0,
        }
    },
    created() {
        if (localStorage.getItem("background-color")) {
            let getColor = localStorage.getItem('background-color')
            let Colorarr = getColor.slice(1, 7)
            this.bacColor = Colorarr

            if (this.bacColor == "F0FFFE") {
                this.radio1 = 1
            }
            else if (this.bacColor == "DAEBFF") {
                this.radio1 = 2
            }
            else if (this.bacColor == "F5F5FD") {
                this.radio1 = 3
            }
        }
        else {
            this.radio1 = 1
        }
    },
    watch: {
        theme(val, oldVal) {
            // if (typeof val !== 'string') return
            // const themeCluster = this.getThemeCluster(val.replace('#', ''))
            // const originalCluster = this.getThemeCluster(oldVal.replace('#', ''))
            // // console.log(themeCluster, originalCluster)
            // const getHandler = (variable, id) => {
            //     return () => {
            //         const originalCluster = this.getThemeCluster(ORIGINAL_THEME.replace('#', ''))
            //         const newStyle = this.updateStyle(this[variable], originalCluster, themeCluster)

            //         let styleTag = document.getElementById(id)
            //         if (!styleTag) {
            //             styleTag = document.createElement('style')
            //             styleTag.setAttribute('id', id)
            //             document.head.appendChild(styleTag)
            //         }
            //         styleTag.innerText = newStyle
            //     }
            // }

            // const chalkHandler = getHandler('chalk', 'chalk-style')

            // if (!this.chalk) {
            //const url = `https://unpkg.com/element-ui@${version}/lib/theme-chalk/index.css`
            //../../assets/images/header-adv.png
            //     const url = `../../assets/css/theme/1B2E41/index.css`
            //     this.getCSSString(url, chalkHandler, 'chalk')
            // } else {
            //     chalkHandler()
            // }

            this.$bus.$emit('changeColor', val)

            // console.log(val)

            // const styles = [].slice.call(document.querySelectorAll('style'))
            //     .filter(style => {
            //         const text = style.innerText
            //         return new RegExp(oldVal, 'i').test(text) && !/Chalk Variables/.test(text)
            //     })
            // styles.forEach(style => {
            //     const { innerText } = style
            //     if (typeof innerText !== 'string') return
            //     style.innerText = this.updateStyle(innerText, originalCluster, themeCluster)
            // })

            //document.querySelector('body').setAttribute('style', 'background-color:#f6f6f6');
            document.querySelector('body').setAttribute('style', 'overflow:auto');
            localStorage.setItem("background-color", val)

            this.$message({
                message: '换肤成功',
                type: 'success'
            })
        }
    },
    methods: {
        //换肤
        handleCommandSkin(command) {
            this.theme = command
        },
        updateStyle(style, oldCluster, newCluster) {
            let newStyle = style
            oldCluster.forEach((color, index) => {
                newStyle = newStyle.replace(new RegExp(color, 'ig'), newCluster[index])
            })
            return newStyle
        },
        getCSSString(url, callback, variable) {
            const xhr = new XMLHttpRequest()
            xhr.onreadystatechange = () => {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    this[variable] = xhr.responseText.replace(/@font-face{[^}]+}/, '')
                    callback()
                }
            }
            xhr.open('GET', url)
            xhr.send()
        },
        getThemeCluster(theme) {
            const tintColor = (color, tint) => {
                let red = parseInt(color.slice(0, 2), 16)
                let green = parseInt(color.slice(2, 4), 16)
                let blue = parseInt(color.slice(4, 6), 16)

                if (tint === 0) { // when primary color is in its rgb space
                    return [red, green, blue].join(',')
                } else {
                    red += Math.round(tint * (255 - red))
                    green += Math.round(tint * (255 - green))
                    blue += Math.round(tint * (255 - blue))

                    red = red.toString(16)
                    green = green.toString(16)
                    blue = blue.toString(16)

                    return `#${red}${green}${blue}`
                }
            }

            const shadeColor = (color, shade) => {
                let red = parseInt(color.slice(0, 2), 16)
                let green = parseInt(color.slice(2, 4), 16)
                let blue = parseInt(color.slice(4, 6), 16)

                red = Math.round((1 - shade) * red)
                green = Math.round((1 - shade) * green)
                blue = Math.round((1 - shade) * blue)

                red = red.toString(16)
                green = green.toString(16)
                blue = blue.toString(16)

                return `#${red}${green}${blue}`
            }

            const clusters = [theme]
            for (let i = 0; i <= 9; i++) {
                clusters.push(tintColor(theme, Number((i / 10).toFixed(2))))
            }
            clusters.push(shadeColor(theme, 0.1))
            return clusters
        }
    }
}
</script>

<style lang="scss" >
@import '../../assets/css/theme';
@import '../../assets/css/tqw_widget_float.css';

.type-size {
    text-align: center;
    cursor: pointer;
}

.showweather-2 {
    width: 80px;
    height: 50px;
    float: left;
    .s-children-2 {
        width: 80px;
        height: 50px;
        float: left;
        .addlist-2 {
            width: 100%;
            height: 50%;
            float: left;
            padding-top: 10px;
            text-align: center;
            .addicon {
                width: 40px;
                height: 100%;
                line-height: 50px;
                color: #000;
                font-weight: 600;
                float: left;
                .addicon-img {
                    width: 30px;
                    height: 30px;
                    margin-top: 10px;
                }
            }
        }
    }
}
</style>
